
#ifndef BRIDGE_H
#define BRIDGE_H

#include <string>
#include vector



/**
  * class Bridge
  * Implemented as a singleton.
  * Responsibility : creating relations between Nodes and Links.
  */

class Bridge
{
public:

	// Constructors/Destructors
	//  


	/**
	 * Empty Constructor
	 */
	Bridge ( );

	/**
	 * Empty Destructor
	 */
	virtual ~Bridge ( );

	// Static Public attributes
	//  

	// Public attributes
	//  


	// Public attribute accessor methods
	//  


	// Public attribute accessor methods
	//  



	/**
	 */
	void buildNodeToLinkMatrix ( )
	{
	}


	/**
	 */
	void addNode ( )
	{
	}


	/**
	 */
	void addLink ( )
	{
	}


	/**
	 */
	void deleteNode ( )
	{
	}


	/**
	 */
	void deleteLink ( )
	{
	}

protected:

	// Static Protected attributes
	//  

	// Protected attributes
	//  

public:


	// Protected attribute accessor methods
	//  

protected:

public:


	// Protected attribute accessor methods
	//  

protected:


private:

	// Static Private attributes
	//  

	// Private attributes
	//  

	bool bridgeExists;
	vector nodeList;
	LinkMatrix linkmatrix;
	GameState state;
public:


	// Private attribute accessor methods
	//  

private:

public:


	// Private attribute accessor methods
	//  


	/**
	 * Set the value of bridgeExists
	 * @param new_var the new value of bridgeExists
	 */
	void setBridgeExists ( bool new_var )	 {
			bridgeExists = new_var;
	}

	/**
	 * Get the value of bridgeExists
	 * @return the value of bridgeExists
	 */
	bool getBridgeExists ( )	 {
		return bridgeExists;
	}

	/**
	 * Set the value of nodeList
	 * @param new_var the new value of nodeList
	 */
	void setNodeList ( vector new_var )	 {
			nodeList = new_var;
	}

	/**
	 * Get the value of nodeList
	 * @return the value of nodeList
	 */
	vector getNodeList ( )	 {
		return nodeList;
	}

	/**
	 * Set the value of linkmatrix
	 * @param new_var the new value of linkmatrix
	 */
	void setLinkmatrix ( LinkMatrix new_var )	 {
			linkmatrix = new_var;
	}

	/**
	 * Get the value of linkmatrix
	 * @return the value of linkmatrix
	 */
	LinkMatrix getLinkmatrix ( )	 {
		return linkmatrix;
	}

	/**
	 * Set the value of state
	 * @param new_var the new value of state
	 */
	void setState ( GameState new_var )	 {
			state = new_var;
	}

	/**
	 * Get the value of state
	 * @return the value of state
	 */
	GameState getState ( )	 {
		return state;
	}
private:


	void initAttributes ( ) ;

};

#endif // BRIDGE_H
